<?php

require_once PATH_CLASS.'image.class.php';
require_once PATH_CLASS.'saison.class.php';

/**
 * Description of membre
 *
 * @author jpsiffert
 */
class membre extends table {
  
    public static  $CLASS_NAME  = 'membre';
    public static  $TABLE_NAME  = 't_membres';
    public static  $PRIMARY_KEY = 'membre_id';
    
	var $membre_id; // 	mediumint(9) 			Non 	Aucun 	AUTO_INCREMENT 	Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_nom; // 	varchar(50) 	utf8_bin 		Non 			Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_prenom; // 	varchar(50) 	utf8_bin 		Non 			Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_sexe; // 	tinyint(1) 			Non 	1 		Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_surnom; // 	varchar(25) 	utf8_bin 		Non 			Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_saison_id; // 	mediumint(9) 			Non 	0 		Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_num_rue; // 	int(4) 			Non 	0 		Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_BTQ_rue; // 	enum('','B','T','Q') 	utf8_bin 		Non 			Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_nom_rue; // 	varchar(100) 	utf8_bin 		Non 			Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_ville_cp; // 	int(6) 			Non 	0 		Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_ville_nom; // 	varchar(100) 	utf8_bin 		Non 			Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_email; // 	varchar(150) 	utf8_bin 		Non 			Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_tel_fixe; // 	varchar(20) 	utf8_bin 		Non 			Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_tel_mobile; // 	varchar(20) 	utf8_bin 		Non 			Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_prof_cursus; // 	varchar(250) 	utf8_bin 		Non 			Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_prof_homme; // 	varchar(150) 	utf8_bin 		Non 			Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_prof_femme; // 	varchar(150) 	utf8_bin 		Non 			Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_prof_categorie; // 	varchar(150) 	utf8_bin 		Non 			Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_prof_souvenir; // 	varchar(150) 	utf8_bin 		Non 			Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_prof_cauchemar; // 	varchar(150) 	utf8_bin 		Non 			Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_prof_vie; // 	varchar(150) 	utf8_bin 		Non 			Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_prof_vers; // 	varchar(255) 	utf8_bin 		Non 			Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_prof_devise; // 	varchar(150) 	utf8_bin 		Non 			Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_prof_equipe; // 	varchar(250) 	utf8_bin 		Non 	Aucun 		Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_prof_histoire; // 	text 	utf8_bin 		Non 	Aucun 		Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_allow_mail; // 	tinyint(1) 			Non 	0 		Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_MC; // 	tinyint(1) 			Non 	0 		Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_DJ; // 	tinyint(1) 			Non 	0 		Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_MJ; // 	tinyint(1) 			Non 	0 		Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_pending; // 	tinyint(1) 			Non 	1 		Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_CA; // 	tinyint(1) 			Non 	0 		Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_photo; // 	varchar(255) 	utf8_bin 		Non 			Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_md5; // 	varchar(32) 	utf8_bin 		Non 			Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_login; // 	varchar(45) 	utf8_bin 		Non 			Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_crdh; // 	int(11) 			Non 	0 		Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_cr; // 	mediumint(9) 			Non 	0 		Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_modh; // 	int(11) 			Non 	0 		Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_logtry; // 	tinyint(1) 		UNSIGNED 	Non 	0 		Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_retrievePwdHash; // 	varchar(32) 	utf8_bin 		Non 	Aucun 		Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier
	var $membre_get_batch_mail; // 	tinyint(1) 			Non 	1 		Affiche les valeurs distinctes 	Modifier 	Supprimer 	Primaire 	Unique 	Index 	Texte entier

	CONST MEMBRE_ID	 = "membre_id";
	CONST MEMBRE_NOM	 = "membre_nom";
	CONST MEMBRE_PRENOM	 = "membre_prenom";
	CONST MEMBRE_SEXE	 = "membre_sexe";
	CONST MEMBRE_SURNOM	 = "membre_surnom";
	CONST MEMBRE_SAISON_ID	 = "membre_saison_id";
	CONST MEMBRE_NUM_RUE	 = "membre_num_rue";
	CONST MEMBRE_BTQ_RUE	 = "membre_BTQ_rue";
	CONST MEMBRE_NOM_RUE	 = "membre_nom_rue";
	CONST MEMBRE_VILLE_CP	 = "membre_ville_cp";
	CONST MEMBRE_VILLE_NOM	 = "membre_ville_nom";
	CONST MEMBRE_EMAIL	 = "membre_email";
	CONST MEMBRE_TEL_FIXE	 = "membre_tel_fixe";
	CONST MEMBRE_TEL_MOBILE	 = "membre_tel_mobile";
	CONST MEMBRE_PROF_CURSUS	 = "membre_prof_cursus";
	CONST MEMBRE_PROF_HOMME	 = "membre_prof_homme";
	CONST MEMBRE_PROF_FEMME	 = "membre_prof_femme";
	CONST MEMBRE_PROF_CATEGORIE	 = "membre_prof_categorie";
	CONST MEMBRE_PROF_SOUVENIR	 = "membre_prof_souvenir";
	CONST MEMBRE_PROF_CAUCHEMAR	 = "membre_prof_cauchemar";
	CONST MEMBRE_PROF_VIE	 = "membre_prof_vie";
	CONST MEMBRE_PROF_VERS	 = "membre_prof_vers";
	CONST MEMBRE_PROF_DEVISE	 = "membre_prof_devise";
	CONST MEMBRE_PROF_EQUIPE	 = "membre_prof_equipe";
	CONST MEMBRE_PROF_HISTOIRE	 = "membre_prof_histoire";
	CONST MEMBRE_ALLOW_MAIL	 = "membre_allow_mail";
	CONST MEMBRE_MC	 = "membre_MC";
	CONST MEMBRE_DJ	 = "membre_DJ";
	CONST MEMBRE_MJ	 = "membre_MJ";
	CONST MEMBRE_PENDING	 = "membre_pending";
	CONST MEMBRE_CA	 = "membre_CA";
	CONST MEMBRE_PHOTO	 = "membre_photo";
	CONST MEMBRE_MD5	 = "membre_md5";
	CONST MEMBRE_LOGIN	 = "membre_login";
	CONST MEMBRE_CRDH	 = "membre_crdh";
	CONST MEMBRE_CR	 = "membre_cr";
	CONST MEMBRE_MODH	 = "membre_modh";
	CONST MEMBRE_LOGTRY	 = "membre_logtry";
	CONST MEMBRE_RETRIEVEPWDHASH	 = "membre_retrievePwdHash";
	CONST MEMBRE_GET_BATCH_MAIL	 = "membre_get_batch_mail";
    
    static function getTableName() {
      return self::$TABLE_NAME;
    }
    
    static function getClassName() {
      return self::$CLASS_NAME;
    }
    
    static function getPrimaryKey() {
      return self::$PRIMARY_KEY;
    }
    
  /**
   *
   * @param array $array
   * @return membre 
   */
  public function __construct($array) {
    if(!is_array($array)) $array = array();
    parent::__construct($array);
    return $this;
  }
  
  public function update($fieldNames = null) {
    $ret = parent::update($fieldNames, self::getClassName());
    return $ret;
  }
  
  /**
   *
   * @param int $id
   * @return membre or array or null 
   */
  public static function getMembre($args,$where='membre_id=%d',$orderBy='membre_id'){
    $db = self::getDb();
    
    $sql = 'select * from t_membres';
    
    if($where!=''){
      if(strpos(strtolower($where),'where')===FALSE){
        $where = sprintf('where %s',$where);
      }

      if(is_array($args)){

        array_map(self::addSlashes, $args);

        switch(count($args)){
          case 1: 
            $where = sprintf($where,$args[0]);
            break;
          case 2: 
            $where = sprintf($where,$args[0],$args[1]);
            break;
          case 3: 
            $where = sprintf($where,$args[0],$args[1],$args[2]);
            break;
          case 4: 
            $where = sprintf($where,$args[0],$args[1],$args[2],$args[3]);
            break;
          case 5: 
            $where = sprintf($where,$args[0],$args[1],$args[2],$args[3],$args[4]);
            break;
        }
      } else if(!empty($args)) {
        $where = sprintf($where,  self::addSlashes($args));
      }

      $sql = "$sql $where";
    }
    
    if($orderBy!=''){
      if(strpos(strtolower($where),'order by')===FALSE){
        $orderBy = sprintf('order by %s',$orderBy);
      }
      $sql = "$sql $orderBy";
    }
    
    $res = $db->SelectAll($sql);
    
    if(is_array($res) && count($res)>0){
      if(count($res)==1){
        $ret = self::newItem($res[0],self::$CLASS_NAME);
      } else {
        foreach($res as $membre){
          $ret[] = self::newItem($membre,self::$CLASS_NAME);
        }
      }
    } else {
      $ret=null;
    }
        
    return $ret;
  }
  
  
  public static function getMembresBySaison($saison_id=0){
    if($saison_id==0) $saison_id = saison::getCurrentId ();
    
    $db = parent::getDb();
    
    
    $sql =sprintf("select * from t_membres left join t_liens_mes using(membre_id) where saison_id=%d",$saison_id);
    
    $rows = $db->SelectAll($sql);
    $membres = array();
    
    if(count($rows)==1){
      $membres = self::newItem($rows[0],self::$CLASS_NAME);
    } else {
      foreach($rows as $row){
        $membres[] = new membre($row);
      }
    }
    return $membres;
  }
  
  /**
   *
   * @param int $id
   * @return membre or null 
   */
  public static function getMembreById($id){
    $ret = self::getMembre($id);
    
    return $ret;
  }

  /**
   * @param string $name
   * @return membre or null 
   */
  public static function getMembreByName($name){
    $name= urldecode($name);
    $ret = self::getMembre($name,'UPPER(CONCAT_WS(" ",'.self::MEMBRE_PRENOM.','.self::MEMBRE_NOM.'))=UPPER("%s")');
    return $ret;
  }
  
  /**
   * @param string $email
   * @return membre or null 
   */
  public static function getMembreByEmail($email){
    $ret = self::getMembre($email,'UPPER('.self::MEMBRE_EMAIL.')=UPPER("%s")');
    return $ret;
  }

  public static function getMembreByCookie($cookieId){
    $ret = self::getMembre($cookieId,'MD5(CONCAT('.self::MEMBRE_EMAIL.','.self::MEMBRE_MD5.'))="%s"');
    return $ret;
  }
  
  /**
   * @param string $email
   * @return membre or null 
   */
  public static function getMembreByHash($value,$hashFieldName){
    $ret = self::getMembre($value,$hashFieldName.'="%s"');
    
    return $ret;
  }
  
  /**
   *
   * @param string $email
   * @return boolean 
   */
  
  const RET_MAIL_SENT   = "MAIL_SENT";
  const RET_NO_MEMBRE   = "NO_MEMBRE";
  
  public static function sendRetrievePwdMail($email){
    $membre = self::getMembreByEmail($email);
    $ret    = self::RET_NO_MEMBRE;
    if(!is_null($membre)){
      if(!empty($membre->membre_email)){
        $membre->membre_retrievePwdHash = commun::getNewHash(8);
        if($membre->update(self::MEMBRE_RETRIEVEPWDHASH)){
          $smarty = commun::getSmartyForMail();
          $smarty->assign('membre',$membre);
          $smarty->assign('site_url',commun::getSiteUrl());
          $text=$smarty->fetch('initRetrievePassword.'.TPL_EXT);
          $membre->sendMail('Demande de mot de passe',$text);
        } else {
				}
				$ret = self::RET_MAIL_SENT;
      } 
    } 
    
    return $ret;
  }
  
  const LOG_NOT_FOUND = "NOT_FOUND";
  const LOG_BAD_PWD   = "BAD_PWD";
  const LOG_FOUND     = "FOUND";
  
  /**
   * 
   * @param string $email
   * @param string $pwd
   * @param string $status
   * @return membre
   */
  public static function tryLogUserIn($email,$pwd, &$status){
    $user = null;
    
    if(strlen(commun::getHash('void'))!=  strlen($pwd) && !is_null($pwd)){
      $pwd = commun::getHash($pwd); 
    }
    
    $status=self::LOG_NOT_FOUND;
    
    // On essaye de chopper le membre par $email déjà
    if(!is_null($pwd)){
      $membre = self::getMembreByEmail($email);
    } else {
      $membre = self::getMembreByCookie($email);
    }
    
    if(!is_null($membre)){
      if($membre->membre_md5!=$pwd && !is_null($pwd)){
        $try = $membre->membre_logtry+1;
        $membre->update(array(self::MEMBRE_LOGTRY=>$try),self::$CLASS_NAME);
      } else {
        $membre->update(array(self::MEMBRE_LOGTRY=>0),self::$CLASS_NAME);
        $status=self::LOG_FOUND;
        $user = $membre;
      }
    } else {
      $status=  self::LOG_NOT_FOUND;
    }
    
    return $user;
  }
  
  const RET_CANCEL_OK = "CANCEL_OK";
  
  public static function unvalidateRetrievePassword($hash){
    $membre = self::getMembreByHash($hash,self::MEMBRE_RETRIEVEPWDHASH);
    if(!empty($membre)){
      $membre->membre_retrievePwdHash = '';
      $membre->update(self::MEMBRE_RETRIEVEPWDHASH);      
    } 
    return self::RET_CANCEL_OK;
  }
  
  public static function validateRetrievePassword($hash){
    $membre = self::getMembreByHash($hash,self::MEMBRE_RETRIEVEPWDHASH);
    $ret    = self::RET_MAIL_SENT; 
    if(!empty($membre)){
      $membre->membre_retrievePwdHash = '';
      $pwd = self::getNewPwd();
      $membre->membre_md5             = commun::getHash($pwd);
      $membre->update(array(self::MEMBRE_RETRIEVEPWDHASH,self::MEMBRE_MD5));
      
      $mail = commun::getSmartyForMail();
      $mail->assign('membre',$membre);
      $mail->assign('pwd',$pwd);
      $text = $mail->fetch('newPassword.'.TPL_EXT);      
      
      $membre->sendMail('Nouveau mot de passe',$text);
      
    } else {
      $ret = self::RET_NO_MEMBRE;
    }
    return $ret;
  }
  
  public function sendMail($objet,$corps){
    if(!empty ($this->membre_email)){
      commun::sendMail($this->membre_email, $objet, $corps);
    }
  }
  
  public function sendCredentials($password){
    $mail = commun::getSmartyForMail();
    $mail->assign('membre',$this);
    $mail->assign('password',$password);
    $message = $mail->fetch('sendCredentials.tpl');
    
    commun::sendMail($this->membre_email,'Tes identifiants LOLITA',$message);
    
  }

  public function welcomeMembre(){
    $mail = commun::getSmartyForMail();
    $password         = self::getNewPwd();
    $this->membre_md5 = commun::getHash($password);
    $this->update('membre_md5');
    $mail->assign('membre',$this);
    $mail->assign('password',$password);
    $message = $mail->fetch('welcome.tpl');
    
    commun::sendMail($this->membre_email,'Tes identifiants LOLITA',$message);
    
  }
  
  public static function getNewPwd(){
   $pwd = commun::getNewPwd();
    return $pwd;
  }

public function getCompet($saison_id=null){
    $db  = parent::getDb();
    
    if(empty($saison_id)) $saison_id = saison::getCurrentId ();
    
    $sql = sprintf("select saison_type from t_liens_mes as t_mes left join t_liens_es using(equipe_id,saison_id) where membre_id=%d and saison_id=%d",$this->membre_id,$saison_id);
    
    $res = $db->SelectFirst($sql);
    
    if($res==null || !isset($res['saison_type'])){
      $res['saison_type']=FALSE;
    }
    
    return $res['saison_type'];
  }
  
  const SAISON_AS_JOUTEUR  = "JOUTEUR";
  const SAISON_AS_COACH    = "COACH";
  const SAISON_AS_MEMBRE   = "MEMBRE";
  const SAISON_AS_ALL      = "ALL";
  
  public function getSaisons($type=self::SAISON_AS_ALL){
    
    $db   = self::getDb();
    $ret  = array(); 
    if($type == self::SAISON_AS_ALL || $type == self::SAISON_AS_JOUTEUR ){
      $sql = sprintf("select * from t_saisons inner join t_liens_mes as t_mes USING(saison_id) inner join t_equipes USING(equipe_id) inner join t_liens_es USING(equipe_id,saison_id) inner join t_saisons_type USING(saison_type) where t_mes.membre_id=%d order by saison_id",$this->membre_id);
      $ret[self::SAISON_AS_JOUTEUR] = $db->SelectAll($sql);
    }

    if($type == self::SAISON_AS_ALL || $type == self::SAISON_AS_COACH){
      $sql = sprintf("select * from t_saisons inner join t_liens_ec as t_ec USING(saison_id)  inner join t_equipes USING(equipe_id) inner join t_liens_es USING(equipe_id,saison_id) inner join t_saisons_type USING(saison_type) where t_ec.membre_id=%d order by t_ec.saison_id",$this->membre_id);
      $ret[self::SAISON_AS_COACH] = $db->SelectAll($sql);
    }

    if($type == self::SAISON_AS_ALL || $type == self::SAISON_AS_MEMBRE){
      $sql = sprintf("select * from t_saisons inner join t_liens_mfs as t_mfs USING(saison_id) inner join t_fonctions USING(fonction_id) left join t_fonctions_type USING(fonction_type_id) where t_mfs.membre_id=%d order by t_mfs.saison_id",$this->membre_id);
      $ret[self::SAISON_AS_MEMBRE] = $db->SelectAll($sql);
    }
    
    return $type==self::SAISON_AS_ALL ? $ret : $ret[$type];
    
  }
  
  public function getSaisonsAsJouteur(){
    $ret = $this->getSaisons(self::SAISON_AS_JOUTEUR);
    return $ret;
  }

  public function getSaisonsAsCoach(){
    $ret = $this->getSaisons(self::SAISON_AS_COACH);
    return $ret;
  }

  public function getSaisonsAsMembre(){
    $ret = $this->getSaisons(self::SAISON_AS_MEMBRE);
    return $ret;
  }
  
  
  public function isActive(){
    $db  = self::getDb();
    $saison_id = saison::getCurrentId();
    $sql = sprintf("select count(*) from t_liens_mes where membre_id=%d and saison_id=%d",$this->membre_id,$saison_id);
    $ret=$db->Count($sql);
    if($ret>0){
      $ret=true;
    }
    return $ret;
  }
  
  public function isLoggued(){
    $ret = $this->membre_id == commun::getLoggedMembreId();
    return $ret;
  }
  
  public function getMembreName($text='',$pars=array()){
    
    $p = array_merge($pars,array('lib'=>"%prenom% %surnom% %nom%",'more'=>null));
    
    $name = empty($text) ? $p['lib'] : $text;

    $name = str_replace('%prenom%', $this->membre_prenom,$name);
    $name = str_replace('%surnom%', $this->membre_surnom,$name);
    $name = str_replace('%nom%', $this->membre_nom,$name);
    
    if(str_word_count($name)==0){
      $name = trim(sprintf("%s %s",$this->membre_prenom,$this->membre_nom));
    }

    if(isset($p['more'])){
      $name .= ' '.$p['more'];
    }
    
    return $name;
  }
  
  public static function getLink($id,$text='',$pars=array()){
    $defPars = array(
       'addImg'=>false
      ,'imageSize' => 'miniature'
      ,'class'=>''
      ,'lib'=>'%prenom% %surnom% %nom%'
      ,'unknown'=>'Anne Onymous'
      ,'jQuery'=>true
       ,'link'=>true      
    );

    $p = array_merge($defPars,$pars); 
    
    if(!($id instanceof membre) && $id == 0){
      return $p['unknown'];
    }

    if($id instanceof membre){
      $membre = $id;
      $id     = $membre->membre_id;
    } else {
      $membre = self::getMembre($id);
    }

    if(is_null($membre)){
      return $p['unknown'];
    }    
    
    $texte = $membre->getMembreName($text,$p);
    
    if($p['jQuery']==true){
      $url = "./#!/membre/".urlencode($membre->membre_prenom." ".$membre->membre_nom)."/id/{$id}";
      $p['class'] =trim('membre-link ' . $p['class']);
    } else {
    //    $page = 'souvenir';
    //    $point= 'fame';
    //    $url = SITE_URL . "index.php?page=$page&point=$point&membre=$id";
    }

    if($p['addImg']){
      $texte = '<span class="img">'.image::getMembreImage($id,$p['imageSize']).'</span><span class="lib">'.$texte.'</span>';
      $p['class'] = trim('membre-image '.$p['class']);
    }

     return $p['link'] ? '<a href="'.$url.'" class="'.$p['class'].'">'	. $texte  . '</a>' : $texte;
    
  }
  
  public function link($text='',$pars=array()){
    $link = self::getLink($this,$text,$pars);
    return $link;
  }

  public function getSaisonType($saison_id=0){
    
    $db = self::getDb();
    
    $where[]="membre_id = ".$this->membre_id;
    
    $with=false;
    
    if(isset($saison_id) && !empty($saison_id)){
      $where[] = "t_mes.saison_id = $saison_id";
      $with=true;
    }
    
    $where = join(' AND ', $where);
    
    $sql = "select * from t_liens_mes as t_mes inner join t_liens_es using(equipe_id) where $where";
    
    $ret = $db->selectAllBy($sql,'saison_id');
    
    if($with){
      $ret = array_shift($ret);
      $ret = $ret['saison_type'];
    }
    
    return $ret;
  }
  
  public function isMemberOf($equipe_id,$isResp=true,$saison_id=-1){
    
    $db = self::getDb();
    
    $sql = "SELECT COUNT(*) FROM t_liens_mes";
    
    $whereAnd[]=sprintf("membre_id=%d",$this->membre_id);
    
    if(isset($equipe_id)){
      $whereAnd[]=sprintf("equipe_id=%d",$equipe_id);
    }
    
    
    if($isResp){
      $whereAnd[]="responsable=1";
    }
    
    if($saison_id==0){
      $saison_id = saison::getCurrentId();
    }
    
    if($saison_id!=-1){
      $whereAnd[]=sprintf("saison_id=%d",$saison_id);
    }
    
    if(count($whereAnd)){
      $sql = $sql." WHERE ".join(' AND ',$whereAnd);
    }
    
    $ret = $db->Count($sql);
    
    return $ret;
  }
  
  
}

